using System;
using System.Collections;
using Refly.CodeDom;
using Refly.CodeDom.Statements;
using Refly.CodeDom.Collections;
using Refly.Templates;
using Refly.CodeDom.Expressions;
using System.Text;
using System.Text.RegularExpressions;
using Reflector;
using Reflector.CodeModel;
using Reflector.Framework;
using System.ComponentModel;
using Doubler.Helpers;

namespace Doubler.Templates
{
    public abstract class ManyTemplateBase : TemplateBase
    {

        private Reflector.CodeModel.IAssembly _Subject;

        [Browsable(false)]
        public Reflector.CodeModel.IAssembly Subject
        {
            get
            {
                return _Subject;
            }
            set
            {
                _Subject = value;
            }
        }

        public ManyTemplateBase()
            : base("", "Double{0}")
        {
            
        }

        public ManyTemplateBase(string templateName, string nameFormat)
            : base(templateName, nameFormat)
        {
            
        }

        public ManyTemplateBase(
            CodeLanguage language,
            string outDirectoryPath,
            Reflector.CodeModel.IAssembly subject,
            string nameFormat,
            ReflectorServices reflectorServices)
            : base(language, outDirectoryPath, nameFormat, reflectorServices)
        {
            this.Subject = subject;
        }
    }
}
